package com.itfenghuang.day12_作业;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class A01_作业 {
    public static void main(String[] args) throws IOException, ClassNotFoundException, ParseException {
//        作业: 1.分别将三个学生保存到本地文件中,并反序列化出来

//        序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("F:\\aaa\\zuoye12.txt"));
//        ArrayList<Studentzuoye> list1 = new ArrayList<>();
        Studentzuoye s = new Studentzuoye("小艾", "女", 22);
        Studentzuoye s1 = new Studentzuoye("小呆", "女", 221);
        Studentzuoye s2 = new Studentzuoye("小乖", "男", 24);
        oos.writeObject(s);
        oos.writeObject(s1);
        oos.writeObject(s2);
//        list1.add(s);
//        list1.add(s1);
//        list1.add(s2);
        oos.close();
//        反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("F:\\aaa\\zuoye12.txt"));
//        Studentzuoye stzy=(Studentzuoye)ois.readObject();
        Object o = ois.readObject();
        Object o1 = ois.readObject();
        Object o2 = ois.readObject();
        System.out.println(o);
        System.out.println(o1);
        System.out.println(o2);
        ois.close();

//      1. 编译时异常和运行时异常的区别?
//           编译时异常:编译时期会出现的问题,不能正常的编译成字节码文件,需要处理
//           运行时异常:编译期不会出现问题,运行时出现的异常,编译期不需要处理
//      2. 数组和集合的区别?
//            数组: 长度固定,只能存储相同的数据类型.
//            集合: 长度不固定,可以存储不同的数据类型.
//      3.ArrayList和LinkedList的区别
//            ArrayList是由数组实现的     LinkedList是由双向链表实现
//      4.相对路径和绝对路径的区别
//            相对路径是指在同一个项目下的路径
//            绝对路径是从盘符里面的路径
//      5.简述自然排序的实现过程?
//            自定义类实现Comparable接口,重写compareTo()方法
//                实现步骤:
//                1.使用空参构造创建TreeSet对象
//                2.自定义类要实现一个接口Comparable接口,重写compareTo()方法
//                3.在compareTo()方法中指定排序规则
//                    如果返回值是正数:表示当前存入的元素是较大值,存右边
//                    如果返回值是负数:表示当前要存入存入的元素是较小值,存在比较值元素的左边
//                    如果返回值是0:表示当前要存入的元素重复,不存
//       6. ==与equals的区别?
//                ==      :只比较值
//                equals  :比较数据类型
//       7. 常见RuntimeException有哪些?
//                  空指针异常   长度越界
//       8. String date="2020-11-11 11:11:11" ; 将日期以
//          2020年11月11日 11时11分11秒的形式在控制台输出
            String date="2020-11-11 11:11:11";
        SimpleDateFormat sip = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sip1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date date1 = sip.parse(date);
        String s3 = sip1.format(date1);
        System.out.println(s3);

//       9.遍历
        HashMap<String, Integer> map = new HashMap<>();
        map.put("tom",18);  map.put("jack",17); map.put("rose",20);
        Set<String> set = map.keySet();
        for (String cc : set) {
            Integer aa = map.get(cc);
            System.out.println(cc+"="+aa);
        }

        Set<Map.Entry<String, Integer>> bb = map.entrySet();
        for (Map.Entry<String, Integer> entry : bb) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }

//        10.ArrayList集合中存储了下面元素"aaa","bbb","ccc","ddd","aaa"  去除集合中重复的元素
        ArrayList<Object> list = new ArrayList<>();
        list.add("aaa");  list.add("bbb"); list.add("ddd");list.add("aaa");list.add("aaa");list.add("bbb");
        System.out.println(list);
        HashSet<Object> qc = new HashSet<>();
        for (Object o3 : list) {
            qc.add(o3);
        }
        System.out.println(qc);

        TreeSet<Object> ts = new TreeSet<>();
        for (Object t : list) {
            ts.add(t);
        }
        System.out.println(ts);

//        11.已知一个集合容器ArrayList中 存储了"aaa","bbb","ccc","aaa","aaa",要求删除所有的"aaa"
        ArrayList<Object> ls = new ArrayList<>();
        ls.add("aaa"); ls.add("bbb"); ls.add("ccc"); ls.add("aaa"); ls.add("aaa");
        Iterator<Object> it = ls.iterator();
        while (it.hasNext()){
            if (it.next().equals("aaa")){
                it.remove();
            }
        }
        System.out.println(ls);

    }
}
